Dim TransactionIds As Collection

Private Sub UserForm_Initialize()
    ' ÊÍãíá ÃÓãÇÁ ÇáÚãáÇÁ Ýí ComboBox1 ãä æÑÞÉ ÇáÚãá "Customer"
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Customer")
    
    Dim LastRow As Long
    LastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row ' ÊÍÏíÏ ÂÎÑ ÕÝ íÍÊæí Úáì ÈíÇäÇÊ
    
    Me.ComboBox1.Clear
    For i = 2 To LastRow ' ÊÌÇåá ÇáÕÝ ÇáÃæá áÃäå íÍÊæí Úáì ÇáÚäÇæíä
        Me.ComboBox1.AddItem ws.Cells(i, 2).Value ' ÇÓã ÇáÚãíá Ýí ÇáÚãæÏ B
    Next i
    
    ' ÅÚÏÇÏ ãÌãæÚÉ áÊÎÒíä Transaction Id áßá Úãíá
    Set TransactionIds = New Collection
    
    ' ÅÖÇÝÉ ÇÎÊíÇÑÇÊ "áå" æ "Úáíå" Åáì ComboBox2
    Me.ComboBox2.AddItem "áå"
    Me.ComboBox2.AddItem "Úáíå"
    
    ' ÊÍÏíÏ "áå" ßÞíãÉ ÇÝÊÑÇÖíÉ áÜ ComboBox2
    Me.ComboBox2.Value = "áå"
    
    Me.TextBox1.Locked = True ' ÊÚííä ÇáÎÇÕíÉ Locked Åáì True áãäÚ ÇáßÊÇÈÉ Ýíå
End Sub

Private Sub ComboBox1_Change()
    ' ÚäÏ ÊÛííÑ ÇÎÊíÇÑ ÇáÚãíá Ýí ComboBox1
    Me.TextBox1.Value = Me.ComboBox1.Value
End Sub

Private Sub ComboBox2_Change()
    ' ÚäÏ ÊÛííÑ ÇÎÊíÇÑ äæÚ ÇáÚãáíÉ Ýí ComboBox2
    Dim amount As Double
    ' ÊÍæíá ÞíãÉ ÇáãÈáÛ Åáì ÚÏÏ ÚÇÆã
    amount = Val(Me.TextBox2.Value)
    
    If Me.ComboBox2.Value = "áå" Then
        ' ÅÐÇ ßÇä ÇáÇÎÊíÇÑ "áå"¡ Þã ÈÅÖÇÝÉ ÇáãÈáÛ ÈÇáãæÌÈ
        Me.TextBox2.Value = amount
    ElseIf Me.ComboBox2.Value = "Úáíå" Then
        ' ÅÐÇ ßÇä ÇáÇÎÊíÇÑ "Úáíå"¡ Þã ÈÅÖÇÝÉ ÇáãÈáÛ ÈÇáÓÇáÈ
        Me.TextBox2.Value = -amount
    End If
End Sub

Private Sub CommandButton1_Click()
    ' ÊÍÞÞ ãä æÌæÏ ÇÓã ÇáÚãíá Ýí ComboBox1 ÞÈá ÇáÍÝÙ
    If Me.ComboBox1.Text = "" Then
        MsgBox "íÑÌì ÇÎÊíÇÑ ÇÓã ÇáÚãíá ãä ComboBox1 ÞÈá ÇáÍÝÙ!"
        Exit Sub
    End If
    
    ' ÊÍÞÞ ãä Ãä Êã ÇÎÊíÇÑ äæÚ ÇáÚãáíÉ ãä ComboBox2
    If Me.ComboBox2.Text = "" Then
        MsgBox "íÑÌì ÇÎÊíÇÑ äæÚ ÇáÚãáíÉ ãä ComboBox2 ÞÈá ÇáÍÝÙ!"
        Exit Sub
    End If
    
    ' ÊÍÞÞ ãä Ãä ÇáãÈáÛ ÇáãæÌæÏ Ýí TextBox2 åæ ÑÞã ÕÍíÍ æáÇ íÓÇæí ÕÝÑ
    Dim amount As Double
    If Not IsNumeric(Me.TextBox2.Text) Then
        MsgBox "ÇáãÈáÛ íÌÈ Ãä íßæä ÑÞã ÕÍíÍ!"
        Exit Sub
    Else
        amount = CDbl(Me.TextBox2.Text)
        If amount = 0 Then
            MsgBox "ÇáãÈáÛ íÌÈ Ãä íßæä ÛíÑ ãÓÇæò ááÕÝÑ!"
            Exit Sub
        End If
    End If
    
    ' ÊÍÞÞ ãä Ãä ÌãíÚ ÇáÍÞæá ÛíÑ ÝÇÑÛÉ
    If Trim(Me.TextBox3.Text) = "" Or Trim(Me.TextBox4.Text) = "" Then
        MsgBox "íÑÌì ãáÁ ÌãíÚ ÇáÍÞæá ÞÈá ÇáÍÝÙ!"
        Exit Sub
    End If

    ' ÍÝÙ ÇáÈíÇäÇÊ Ýí æÑÞÉ ÇáÚãá "DebtPayment"
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("DebtPayment")
    
    Dim CurrentCustomerId As String
    CurrentCustomerId = Me.ComboBox1.Text
    
    ' ÇáÈÍË Úä ÂÎÑ "Transaction Id" áäÝÓ "Customer Id"
    Dim LastTransactionId As Long
    LastTransactionId = GetLastTransactionId(CurrentCustomerId)
    
    ' ÒíÇÏÉ ÇáÜ "Transaction Id" ÈæÇÍÏ
    Dim currentTransactionId As Long
    currentTransactionId = LastTransactionId + 1
    
    Dim LastRow As Long
    LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row + 1
    
    ws.Cells(LastRow, 1).Value = CurrentCustomerId ' ÇÓã ÇáÚãíá
    ws.Cells(LastRow, 2).Value = currentTransactionId ' ÑÞã ÇáÚãáíÉ
    ws.Cells(LastRow, 3).Value = amount ' ÇáãÈáÛ
    ws.Cells(LastRow, 4).Value = Me.TextBox3.Text ' ÇáÊÇÑíÎ
    ws.Cells(LastRow, 5).Value = Me.TextBox4.Text ' ÇáÊÝÇÕíá
    ws.Cells(LastRow, 6).Value = Me.ComboBox2.Text ' äæÚ ÇáÚãáíÉ
    
    ' ÅÚÇÏÉ ÊÚííä ÇáÍÞæá ÈÚÏ ÇáÍÝÙ
    Me.ComboBox1.Text = ""
    Me.TextBox1.Text = ""
    Me.TextBox2.Text = ""
    Me.TextBox3.Text = ""
    Me.TextBox4.Text = ""
    Me.ComboBox2.Text = ""
    
    ' ÅÖÇÝÉ ÇáÚãíá æÑÞã ÇáÚãáíÉ ÇáÌÏíÏÉ Åáì ÇáãÌãæÚÉ
    Dim newRecord As Variant
    newRecord = Array(CurrentCustomerId, currentTransactionId)
    TransactionIds.Add newRecord
    
    MsgBox "Êã ÍÝÙ ÇáÈíÇäÇÊ ÈäÌÇÍ!"
End Sub



Private Function GetLastTransactionId(customerId As String) As Long
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("DebtPayment")
    
    Dim LastRow As Long
    LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    
    Dim i As Long
    Dim LastTransactionId As Long
    LastTransactionId = 0 ' ÞíãÉ ÇÝÊÑÇÖíÉ ÅÐÇ áã íÊã ÇáÚËæÑ Úáì Ãí ÚãáíÇÊ
    
    For i = 2 To LastRow ' íÈÏÃ ãä ÇáÕÝ ÇáËÇäí áÊÌÇåá ÇáÚäæÇä
        If ws.Cells(i, 1).Value = customerId Then
            ' ÚäÏãÇ äÌÏ ÚãíáðÇ íÊã ÊÍÏíË ÇáÞíãÉ
            LastTransactionId = ws.Cells(i, 2).Value
        End If
    Next i
    
    GetLastTransactionId = LastTransactionId
End Function

